#ifndef winTrace_h__
#define winTrace_h__
#include "../../inc/skyAdapter.h"
#ifdef _WIN_

namespace Sky
{

Void		xTraceA(Sky::xTraceType type,Sky::u32 traceLevel,const Sky::AChar* fmt,...);
TResult	    xTraceHrA(xTraceType type,Sky::u32 traceLevel,Sky::TResult hr,const AChar* fmt,...);

Void		xTraceW(Sky::xTraceType type,Sky::u32 traceLevel,const Sky::WChar* fmt,...);
TResult	    xTraceHrW(Sky::xTraceType type,Sky::u32 traceLevel,Sky::TResult hr,const Sky::WChar* fmt,...);

#if defined(_XTRACE)
	#define __xTraceW									Sky::xTraceW
	#define __xTraceMsgW(traceType,traceLevel,msg)		traceType,Sky::TraceLevel::traceLevel,(Sky::WChar*)L("")##traceLevel##""__XLEVEL__""##msg##""__XLINE__""__XFUNC__""__XFILE__"\r\n",Sky::TraceLevel::traceLevel
	
	#define __xTraceHrW									Sky::xTraceHrW
	#define __xTraceMsgHrW(traceType,traceLevel,hr,msg)	traceType,Sky::TraceLevel::traceLevel,hr,(Sky::WChar*)L("")##traceLevel##""__XLEVEL__""__XHR__","##msg##""__XLINE__""__XFUNC__""__XFILE__"\r\n",Sky::TraceLevel::traceLevel,hr
	
	#define __xTraceA									Sky::xTraceA
	#define __xTraceMsgA(traceType,traceLevel,msg)		traceType,Sky::TraceLevel::traceLevel,(Sky::AChar*)""#traceLevel##""__XLEVEL__","##msg##""__XLINE__""__XFUNC__""__XFILE__"\r\n",Sky::TraceLevel::traceLevel
	
	#define __xTraceHrA									Sky::xTraceHrA
	#define __xTraceMsgHrA(traceType,traceLevel,hr,msg)	traceType,Sky::TraceLevel::traceLevel,hr,(Sky::AChar*)""#traceLevel##""__XLEVEL__""__XHR__","##msg##""__XLINE__""__XFUNC__""__XFILE__"\r\n",Sky::TraceLevel::traceLevel,hr
#endif

}
#endif
#endif
